package com.bigegg.employee.mapper;

import java.util.List;

import com.bigegg.employee.domain.ActivitySign;
import com.bigegg.employee.dto.ActSignDetail;
import com.bigegg.employee.dto.MajorActSignSta;
import com.bigegg.employee.dto.StuSign;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 招聘会预定Mapper接口
 *
 * @author sun
 * @date 2022-08-16
 */
@Mapper
public interface ActivitySignMapper {
    /**
     * 查询招聘会预定
     *
     * @param id 招聘会预定主键
     * @return 招聘会预定
     */
    ActivitySign selectActivitySignById(Long id);

    /**
     * 查询招聘会预定列表
     *
     * @param activitySign 招聘会预定
     * @return 招聘会预定集合
     */
    List<ActivitySign> selectActivitySignList(ActivitySign activitySign);

    /**
     * 新增招聘会预定
     *
     * @param activitySign 招聘会预定
     * @return 结果
     */
    int insertActivitySign(ActivitySign activitySign);

    /**
     * 修改招聘会预定
     *
     * @param activitySign 招聘会预定
     * @return 结果
     */
    int updateActivitySign(ActivitySign activitySign);

    /**
     * 删除招聘会预定
     *
     * @param id 招聘会预定主键
     * @return 结果
     */
    int deleteActivitySignById(Long id);

    /**
     * 批量删除招聘会预定
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    int deleteActivitySignByIds(Long[] ids);

    /**
     * 是否已经签到
     *
     * @param stuId 学生ID
     * @param actId 活动ID
     * @return 大于 0 表示签到了
     */
    int hasSigned(Long stuId, Long actId);

    /**
     * 活动总签到数
     *
     * @param activityId 活动ID
     * @return 签到数
     */
    int countSign(Long activityId);

    /**
     * 班级学生签到数
     *
     * @param activityId 活动ID
     * @param classId    班级ID
     * @return 签到数
     */
    int countClassSign(@Param("activityId") Long activityId,@Param("classIdList") List<Long> classId);

    /**
     * 按照专业分组查询签到总数
     *
     * @param activityId 活动ID
     * @param collegeId  学院ID
     * @return 专业分组签到总数
     */
    List<MajorActSignSta> countMajorSign(Long activityId, Long collegeId);


    /**
     * 查询活动签到情况
     * @return ActSignDetail
     */
    List<ActSignDetail> getActSignDetail();


    /**
     * 班级签到详情
     * @return ActSignDetail
     */
    List<StuSign> getClassDetail(@Param("activityId") Long activityId, @Param("classId") Long classId);

}
